package edu.hwadee.BEIS.repository;

import java.util.Date;
import java.util.Set;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;

import edu.hwadee.BEIS.entity.SchoolBasicInfor;
import edu.hwadee.BEIS.entity.StudentBasicSituation;

/**
 * 学生基本情况Repo
 * @author kingsong
 *
 */
public interface StudentBasicSituationRepository extends JpaRepository<StudentBasicSituation, Integer> {

    /**
     * 查找从指定日期之后的学生基本情况记录
     *
     * @param schoolBasicInfor
     * @param county
     * @param city
     * @param from
     * @return
     */
    Set<StudentBasicSituation> findBySchoolBasicIsAndCountyAuditStatusIsAndCityAuditStatusIsAndModifyTimeAfterOrderByModifyTime(SchoolBasicInfor schoolBasicInfor, Short county, Short city, Date from);

    /*
     * 根据学生基本情况表的ID查询学生基本情况
     */
    StudentBasicSituation findByStudentBasicSituationId(Integer studentBasicSituationId);

    /*
     * 根据学生基本情况表的学校基本信息查询学生基本情况，并按照修改时间排序
     */
    Page<StudentBasicSituation> findBySchoolBasicInOrderByModifyTimeDesc(Pageable pageable, Set<SchoolBasicInfor> schoolBasic);

    /*
     * 根据学生基本情况表的学校基本信息和区县审核状态查询学生基本情况，并按照修改时间排序
     */
    Page<StudentBasicSituation> findBySchoolBasicInAndCountyAuditStatusIsOrderByModifyTimeDesc(Pageable pageable, Set<SchoolBasicInfor> schoolBasic, Short countyAuditStatus);

    /*
     * 根据学生基本情况表的学校基本信息的belongID或区县审核状态为通过查询学生基本情况，并按照修改时间排序，去重
     */
    Page<StudentBasicSituation> findDistinctBySchoolBasic_BelongIdOrCountyAuditStatusOrderByModifyTimeDesc(Pageable pageable, String belongId, Short countyAuditStatus);

    /*
     * 根据学生基本情况表的学校基本信息的belongID或区县审核状态为通过，同时根据市局审核状态查询学生基本情况，并按照修改时间排序，去重
     */
    Page<StudentBasicSituation> findDistinctBySchoolBasic_BelongIdAndCityAuditStatusOrCountyAuditStatusAndCityAuditStatusOrderByModifyTimeDesc(Pageable pageable,String belongId, Short cityAuditStatus1,Short countyAuditStatus,Short cityAuditStatus2);
}
